// 水质标准配置（2025年最新标准）
const STANDARD_LIMITS = {
    'COD': 20,     // mg/L 
    'BOD': 4,      // mg/L 
    '氨氮': 1.0,    // mg/L 
    '总磷': 0.2     // mg/L 
};
 
let currentChart = null;
let allData = [];
 
// 文件读取处理 
document.getElementById('file-input').addEventListener('change',  function(e) {
    const file = e.target.files[0]; 
    if (!file) return;
 
    const reader = new FileReader();
    reader.onload  = function(e) {
        processData(e.target.result,  file.name); 
    };
    
    file.name.endsWith('.xlsx')  ? 
        reader.readAsArrayBuffer(file)  : 
        reader.readAsText(file); 
});
 
// 数据处理核心逻辑（保持原有函数不变）
function processData(data, fileName) {let rawData = [];
    if (fileName.endsWith('.xlsx'))  {
        const workbook = XLSX.read(data,  {type: 'array'});
        rawData = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]]); 
    } else {
        rawData = data.split('\n').slice(1).map(row  => {
            const cells = row.split(','); 
            return {
                监测点: cells[0],
                时间段: cells[1],
                COD: parseFloat(cells[2]),
                BOD: parseFloat(cells[3]),
                氨氮: parseFloat(cells[4]),
                总磷: parseFloat(cells[5])
            };
        });
    }
 
    // 数据重组 
    allData = rawData.reduce((acc,  cur) => {
        const key = cur.监测点;
        if (!acc[key]) acc[key] = [];
        acc[key].push(cur);
        return acc;
    }, {});
 
    // 默认显示COD图表 
    updateChart('COD');
}
 
// ECharts配置生成器（保持逻辑优化）
function generateOption(type) {const dataValues = Object.values(allData).flat().map(d  => d[type]);
    const dataMax = Math.max(...dataValues); 
    const limitValue = STANDARD_LIMITS[type];
    
    // 动态计算Y轴最大值 
    const yAxisMax = Math.max(dataMax,  limitValue) * 1.1; // 增加10%余量 

    return {
        title: { text: `${type}浓度变化趋势`, left: 'center' },
        tooltip: { trigger: 'axis' },
        xAxis: {
            type: 'category',
            data: [...new Set(Object.values(allData).flat().map(d  => d.时间段))],
            axisLabel: { rotate: 45 }
        },
        yAxis: { 
            name: '浓度 (mg/L)',
            max: yAxisMax,
            min: 0
         },
        series: [
            ...Object.entries(allData).map(([site,  data]) => ({
                name: site,
                type: 'line',
                data: data.map(d  => d[type]),
                smooth: true 
            })),
            {
                name: '三类标准',
                type: 'line',
                markLine: {
                    data: [{ yAxis: STANDARD_LIMITS[type] }],
                    symbol: 'none',
                    lineStyle: { color: '#ff0000', type: 'dashed' },
                    label: { show: true, position: 'end', formatter: '三类标准' }
                }
            }
        ],
        grid: { top: 80, bottom: 100 },
        legend: { bottom: 20 }
    };
}

// 图表更新函数 
function updateChart(type) {
    if (currentChart) currentChart.dispose(); 
    currentChart = echarts.init(document.getElementById('chart-container')); 
    currentChart.setOption(generateOption(type)); 
}
 
// 按钮事件绑定 
document.querySelectorAll('.chart-btn').forEach(btn  => {
    btn.addEventListener('click',  () => updateChart(btn.dataset.type)); 
});